记一个mybatis | 您所在的位置:网站首页 › mybatisplus 返回主键 › 记一个mybatis |
虽然是小坑,但坑起来要人命 主键返回配置参考教程 在插入语句里面有一些额外的属性和子元素用来处理主键的生成,并且提供了多种生成方式。首先,如果你的数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),那么你可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置为目标属性就 OK 了。例如,如果上面的 Author 表已经在 id 列上使用了自动生成,那么语句可以修改为: insert into Author (username,password,email,bio) values (#{username},#{password},#{email},#{bio})如果你的数据库还支持多行插入, 你也可以传入一个 Author 数组或集合,并返回自动生成的主键。 insert into Author (username, password, email, bio) values (#{item.username}, #{item.password}, #{item.email}, #{item.bio}) 坑来了本人用的PostgreSQL,是支持自增主键的,但无论如何,返回的都是1,我的操作如下: // XxxMapper.java public interface XxxMapper extends BaseMapper { int insertXxx(Xxx xxx); } // XxxServiceImpl.java @Service public class XxxServiceImpl extends ServiceImpl implements IXxxService { @Resource private XxxMapper xxxMapper; @Override public void insertXxx(Xxx xxx) { int xxxId = xxxMapper.insertXxx(xxx); } }就这,我在网上找了半天。。老司机们可能都看笑了,这不。。错得很明显嘛 然而本菜鸟被下了降头,就是找不到原因。 百度出来的全是跟上一节一样,基本配置CV了一遍又一遍,一群¥%#*&E…%,这个要你教?教程抄起来就那么有意思? After two hours… 破案了: 没错,对,配置没错,insert没错,返回没错,主键也没错。。 主键已经在Entity对象里了,也就是说,上述代码中的xxxId取的不是它返回的id,还是那个影响行数,返回的主键ID它已经给你放到你的入参对象里了。。 xxxMapper.insertXxx(xxx); int xxxId = xxx.getId();瞧,简单直白。。还得夸它干得不错,很人性化。。 我第一次也是这么认为的。。 第一次? 嗯。。这是第二次 第一次没中降头,自己想明白了,还颇为赞叹得告知同事。。 中间半个月去干其它事了,就没想起来 还是请教同事后他给我破的案,你之前不是还告诉我XXXXXXX嘛?(o´・ェ・`o) |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |